#include<iostream>
#include<sys/wait.h>
using namespace std;

// 父进程通过wait()/waitpid()等函数等待子进程结束，在子进程退出之前，父进程将被阻塞待
int main()
{
    if(fork()>0)
	{
		// 父进程的流程
		int sts;
		pid_t pid = wait(&sts);  // 用以接收子进程的pid

		cout << "已终止的子进程编号：" << pid << endl;

		if(WIFEXITED(sts))
		{
			cout << "子进程是正常退出的，退出状态是：" << WEXITSTATUS(sts) << endl;
		}
		else
		{
			cout << "子进程是异常退出的，终止它的信号是：" << WTERMSIG(sts) << endl;
		}

	}else
	{
		// 子进程的流程
		sleep(100);
		// int* p =0; *p=10;
		exit(0);
	}
}

